
// Generated from Nasm.g4 by ANTLR 4.9.3

#pragma once


#include "antlr4-runtime.h"
#include "NasmParser.h"


namespace dspnasm {

/**
 * This interface defines an abstract listener for a parse tree produced by NasmParser.
 */
class  NasmListener : public antlr4::tree::ParseTreeListener {
public:

  virtual void enterProgram(NasmParser::ProgramContext *ctx) = 0;
  virtual void exitProgram(NasmParser::ProgramContext *ctx) = 0;

  virtual void enterStatement(NasmParser::StatementContext *ctx) = 0;
  virtual void exitStatement(NasmParser::StatementContext *ctx) = 0;

  virtual void enterDeclare(NasmParser::DeclareContext *ctx) = 0;
  virtual void exitDeclare(NasmParser::DeclareContext *ctx) = 0;

  virtual void enterIdTail(NasmParser::IdTailContext *ctx) = 0;
  virtual void exitIdTail(NasmParser::IdTailContext *ctx) = 0;

  virtual void enterData(NasmParser::DataContext *ctx) = 0;
  virtual void exitData(NasmParser::DataContext *ctx) = 0;

  virtual void enterType(NasmParser::TypeContext *ctx) = 0;
  virtual void exitType(NasmParser::TypeContext *ctx) = 0;

  virtual void enterSign(NasmParser::SignContext *ctx) = 0;
  virtual void exitSign(NasmParser::SignContext *ctx) = 0;

  virtual void enterInstructionPacket(NasmParser::InstructionPacketContext *ctx) = 0;
  virtual void exitInstructionPacket(NasmParser::InstructionPacketContext *ctx) = 0;

  virtual void enterInstruction(NasmParser::InstructionContext *ctx) = 0;
  virtual void exitInstruction(NasmParser::InstructionContext *ctx) = 0;

  virtual void enterThreeOp(NasmParser::ThreeOpContext *ctx) = 0;
  virtual void exitThreeOp(NasmParser::ThreeOpContext *ctx) = 0;

  virtual void enterTwoOp(NasmParser::TwoOpContext *ctx) = 0;
  virtual void exitTwoOp(NasmParser::TwoOpContext *ctx) = 0;

  virtual void enterOneOp(NasmParser::OneOpContext *ctx) = 0;
  virtual void exitOneOp(NasmParser::OneOpContext *ctx) = 0;

  virtual void enterNoneOp(NasmParser::NoneOpContext *ctx) = 0;
  virtual void exitNoneOp(NasmParser::NoneOpContext *ctx) = 0;

  virtual void enterOperand(NasmParser::OperandContext *ctx) = 0;
  virtual void exitOperand(NasmParser::OperandContext *ctx) = 0;

  virtual void enterRegs(NasmParser::RegsContext *ctx) = 0;
  virtual void exitRegs(NasmParser::RegsContext *ctx) = 0;

  virtual void enterReg(NasmParser::RegContext *ctx) = 0;
  virtual void exitReg(NasmParser::RegContext *ctx) = 0;

  virtual void enterMemory(NasmParser::MemoryContext *ctx) = 0;
  virtual void exitMemory(NasmParser::MemoryContext *ctx) = 0;

  virtual void enterLop(NasmParser::LopContext *ctx) = 0;
  virtual void exitLop(NasmParser::LopContext *ctx) = 0;

  virtual void enterRop(NasmParser::RopContext *ctx) = 0;
  virtual void exitRop(NasmParser::RopContext *ctx) = 0;

  virtual void enterExpr(NasmParser::ExprContext *ctx) = 0;
  virtual void exitExpr(NasmParser::ExprContext *ctx) = 0;

  virtual void enterAdds(NasmParser::AddsContext *ctx) = 0;
  virtual void exitAdds(NasmParser::AddsContext *ctx) = 0;

  virtual void enterItem(NasmParser::ItemContext *ctx) = 0;
  virtual void exitItem(NasmParser::ItemContext *ctx) = 0;

  virtual void enterMuls(NasmParser::MulsContext *ctx) = 0;
  virtual void exitMuls(NasmParser::MulsContext *ctx) = 0;

  virtual void enterFactor(NasmParser::FactorContext *ctx) = 0;
  virtual void exitFactor(NasmParser::FactorContext *ctx) = 0;

  virtual void enterShift(NasmParser::ShiftContext *ctx) = 0;
  virtual void exitShift(NasmParser::ShiftContext *ctx) = 0;

  virtual void enterVal(NasmParser::ValContext *ctx) = 0;
  virtual void exitVal(NasmParser::ValContext *ctx) = 0;

  virtual void enterNum(NasmParser::NumContext *ctx) = 0;
  virtual void exitNum(NasmParser::NumContext *ctx) = 0;

  virtual void enterSize(NasmParser::SizeContext *ctx) = 0;
  virtual void exitSize(NasmParser::SizeContext *ctx) = 0;


};

}  // namespace dspnasm
